<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.3
 * 日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 */
class notify_url {

	function noturl(){
		require_once(SYS_DIR.'base'.DS.'zfb'.DS.'alipay.config.php');
		 
		require_once(SYS_DIR.'base'.DS.'zfb'.DS.'lib'.DS.'alipay_notify.class.php');

		//计算得出通知验证结果
		$alipay_config['partner']		= '2088121651738842';   //合作身份者id，以2088开头的16位纯数字
		 
		$alipay_config['seller_email']	= '3110633962@qq.com';  //收款支付宝账号，一般情况下收款账号就是签约账号
		 
		$alipay_config['key']			= 'tsyyrb0q98l4tufwa5y5cveho4vy5zl4'; //安全检验码，以数字和字母组成的32位字符
		 
		//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
		 
		 
		$alipay_config['sign_type']    = strtoupper('MD5'); //签名方式 不需修改
		 
		$alipay_config['input_charset']= strtolower('utf-8'); //字符编码格式 目前支持 gbk 或 utf-8
		 
		//ca证书路径地址，用于curl中ssl校验
		$alipay_config['cacert']    = SYS_DIR.'base'.DS.'zfb'.DS.'cacert.pem'; //请保证cacert.pem文件在当前文件夹目录中
		 
		//访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
		$alipay_config['transport']    = 'http';
		
		$alipayNotify = new AlipayNotify($alipay_config);
		$verify_result = $alipayNotify->verifyNotify();
		
		if($verify_result) {//验证成功
			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			//请在这里加上商户的业务逻辑程序代
		
		
			//——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
		
			//获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
		
			//商户订单号
		
			$out_trade_no = $_POST['out_trade_no'];
		
			//支付宝交易号
		
			$trade_no = $_POST['trade_no'];
		
			//交易状态
			$trade_status = $_POST['trade_status'];
		
			if($_POST['trade_status'] == 'TRADE_SUCCESS') {
				
				$uid = @$_SESSION['recruit_zjid'] ? @$_SESSION['recruit_zjid'] : @$_SESSION['firm_id'];
				if($uid){
					$dt = C_base::M('admin.recruit')->dingdan_s($uid,array('uid'=>$uid,'id'=>$out_trade_no));
					if($dt){  //修改订单状态
						$mo = C_base::M('admin.xitonggl')->tc_s(array('id'=>$dt['type']));
						C_base::M('admin.xitonggl')->tc_u(array('id'=>$out_trade_no),array('zt'=>1,'time'=>time()));
					}
					if(@$_SESSION['recruit_zjid']){  //修改专家统计表
						$tongji = C_base::M('admin.recruit')->zjtongji_s(array('zjid'=>$uid));
						if($tongji){
							$da = array('jlfs+'=>$mo['kxz'],'jlgmfs+'=>$mo['kxz'],'kfb+'=>$mo['kfb']);
							if($dt['type'] == 1){  //季度
								$da['yxjstime'] = $tongji['yxjstime'] + strtotime("3 month");
							}elseif ($dt['type'] == 2){  //半年
								$da['yxjstime'] = $tongji['yxjstime'] + strtotime("6 month");
							}elseif ($dt['type'] == 3){  //年
								$da['yxjstime'] = $tongji['yxjstime'] + strtotime("1 years");
							}
							$xx = C_base::M('admin.recruit')->zjtongji_u(array('zjid'=>$uid),$da);
						}else{
							$da = array('zjid'=>$uid,'yxkstime'=>time(),'fenzu'=>$dt['type'],'jlgmfs'=>$mo['kxz'],'kfb'=>$mo['kfb']);
							if($dt['type'] == 1){  //季度
								$da['yxjstime'] = strtotime("3 month");
							}elseif ($dt['type'] == 2){  //半年
								$da['yxjstime'] = strtotime("6 month");
							}elseif ($dt['type'] == 3){  //年
								$da['yxjstime'] = strtotime("1 years");
							}
							$xx = C_base::M('admin.recruit')->zjtongji_c($da);
						}
					}
				}
				//判断该笔订单是否在商户网站中已经做过处理
				//如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
				//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
				//如果有做过处理，不执行商户的业务程序
					
				//注意：
				//退款日期超过可退款期限后（如三个月可退款），支付宝系统发送该交易状态通知
		
				//调试用，写文本函数记录程序运行情况是否正常
				//logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
			}
		
			//——请根据您的业务逻辑来编写程序（以上代码仅作参考）——
			 
			echo "success";		//请不要修改或删除
		
			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		}
		else {
			//验证失败
			echo "fail";
		
			//调试用，写文本函数记录程序运行情况是否正常
			//logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
		}
	}
}
?>